package cn.com.nes.mybatis.callcenter.mapper;


import cn.com.nes.site.service.comecall.dto.GetWechatMessageRecordListDto;
import cn.com.nes.site.service.comecall.dto.MessageInfoDto;
import cn.com.nes.site.service.comecall.dto.QueryMessageByQueryDto;
import cn.com.nes.site.service.comecall.entity.MessageInfo;
import cn.com.nes.site.service.comecall.vo.*;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface MessageInfoMapper extends BaseMapper<MessageInfo> {

    /**
     * 警表判断消息表是否有未处理的
     *
     * @param sbId
     * @return
     */
    int selectExistNoHandle(String sbId);

    /**
     * 根据类别获取工作台消息接口
     *
     * @param vo
     * @return
     */
    List<QueryMessageByQueryDto> queryMessageByQuery(QueryMessageByQueryVo vo);

    /**
     * 获取最新消息接口
     *
     * @return
     */
    List<QueryMessageByQueryDto> queryNewMessage(@Param("userId") Long userId, @Param("loginDate") Long loginDate);

    /**
     * 设置消息已读
     *
     * @param vo
     * @return
     */
    int readMessage(ReadMessageVo vo);

    /**
     * 根据类别和id将消息表更新为已处理
     *
     * @param vo
     */
    void updateMessageIsHandle(UpdateMessageIsHandleVo vo);

    /**
     * 修改消息为已经推送过
     *
     * @param userId
     * @param loginDate
     */
    void updateMessageIsPush(@Param("userId") Long userId, @Param("loginDate") Long loginDate);

    /**
     * 根据类别获取工作台需要处理的消息接口
     *
     * @param vo
     * @return
     */
    List<QueryMessageByQueryDto> queryMessageByHandle(QueryMessageByQueryVo vo);

    /**
     * 根据工单id获取消息是否存在
     *
     * @param id
     * @return
     */
    int queryMessageIsExitsByWorkOrderId(Long id);


    /**
     * 查询用户信息
     */
    List<QueryMessageByQueryDto> queryUserMessag(QueryMessageByQueryVo vo);

    void insertWeChatMessageRecord(@Param("openId") String openId, @Param("content") String content, @Param("msgCode") String msgCode);

    int deleteMessage(@Param("userId") Long userId,@Param("messageId") Long messageId);

    List<Map> selectRepairUserUserID(MessageInfoVo messageInfoVo);

    List<Map> selectUserUserId(MessageInfoVo messageInfoVo);

    int insertMessageRegion( @Param("messageId") Long messageId,@Param("xzqhdm") List<String>  xzqhdm);

    List<MessageInfoDto> getNotificationMessage(MessageInfoVo messageInfoVo);

    List<Map> getMessageRegionXzqhdm(Long messageId);

    int updateMessageInfo(MessageInfoVo messageInfoVo);

    int updateUserMessageInfo(MessageInfoVo messageInfoVo);

    int updateMessageRegion(Long messageId);

    int deleteMessageRegion(Long messageId);

    Long insertByMessageInfo(MessageInfo vo);

    List<GetWechatMessageRecordListDto> getWechatMessageRecordList(GetWechatMessageRecordListVo recordListVo);
}